Spring Boot CRUD: Create (Veri Ekleme) İşlemi Nasıl Yapılır?

İngilizce'ye Geç
Kısa Özet: Spring Boot'ta Veritabanına Nasıl Kayıt Eklenir?

Spring Boot uygulamasında veritabanına yeni bir kayıt eklemek (Create) için öncelikle bir Entity sınıfı ve Spring Data JPA'yı miras alan bir Repository oluşturmalısınız. REST API üzerinden gelen veriyi @PostMapping ve @RequestBody anotasyonları ile Controller katmanında yakaladıktan sonra, Service katmanındaki repository.save(entity) metodunu çağırarak veriyi veritabanına kalıcı olarak kaydedebilirsiniz. İşlem başarılı olduğunda 201 Created durum kodu dönülmesi en iyi pratiktir.

Spring Boot CRUD create işlemi mimarisi ve katmanları

Bu yazıda, Spring Boot CRUD (Create, Read, Update, Delete) operasyonlarının ilki olan Create (Kayıt Ekleme) işlemini adım adım ele alacağız. Veri ekleme işlemini doğrudan Entity üzerinden yapmak yerine, güvenli ve sürdürülebilir bir mimari olan Controller → Service → Repository katmanları ve DTO (Data Transfer Object) kullanarak gerçekleştireceğiz.


1. Spring Boot Projesi Bağımlılıkları

Veritabanı işlemleri yapabilmek için Spring Initializr üzerinden projenizi oluştururken aşağıdaki bağımlılıkları (dependencies) eklediğinizden emin olun:

  • Spring Web: RESTful endpoint'leri oluşturmak için.
  • Spring Data JPA: Veritabanı işlemleri (ORM) için.
  • PostgreSQL Driver (veya MySQL/H2): Veritabanı bağlantısı için.
  • Lombok: Kod kalabalığını (boilerplate) önlemek için.

2. User Entity Sınıfının Oluşturulması

İlk olarak, veritabanındaki kullanıcı tablosunu temsil eden User sınıfımızı oluşturuyoruz. JPA ve Lombok kurallarına uygun temiz bir sınıf yazıyoruz.

Spring boot user entity sınıfı örneği
@Entity
@Table(name = "users")
@Getter
@Setter
@NoArgsConstructor
public class User {

    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long id;

    @Column(nullable = false)
    private String username;

    @Column(unique = true, nullable = false)
    private String email;

    @Column(nullable = false)
    private String password;
}

3. Repository Katmanı Oluşturma

Veritabanına kayıt atabilmek için JpaRepository'den miras alan bir interface oluşturuyoruz. Bu sayede save() gibi metotları sıfırdan yazmaktan kurtuluyoruz.

Spring boot jpa repository arayüzü
@Repository
public interface UserRepository extends JpaRepository<User, Long> {
    // Veritabanı kayıt işlemi (Create) için save() metodu burada hazır bulunur.
}

4. Request DTO (Veri Transfer Nesnesi) Oluşturma

Kullanıcıdan gelen verileri (JSON) doğrudan veritabanı Entity'sine bağlamak güvenlik açıklarına (Over-posting) yol açabilir. Bu yüzden sadece ihtiyacımız olan alanları içeren bir DTO (Data Transfer Object) oluşturuyoruz.

Spring boot request dto nesnesi
@Getter
@Setter
public class UserRequest {
    private String username;
    private String email;
    private String password;
}

5. Service Katmanı İş Mantığı

Service katmanı uygulamanın beynidir. Controller'dan gelen DTO'yu alır, bir Entity'ye çevirir (mapping) ve Repository'ye kaydedilmesi için gönderir. (Not: Modern projelerde Autowired yerine Constructor Injection kullanıyoruz).

Spring boot service katmanı
@Service
@RequiredArgsConstructor
public class UserService {

    private final UserRepository userRepository;

    @Transactional
    public User saveUser(UserRequest request) {
        // DTO'dan gelen veriyi Entity'ye dönüştürme (Mapping)
        User user = new User();
        user.setUsername(request.getUsername());
        user.setEmail(request.getEmail());
        user.setPassword(request.getPassword()); // Gerçek projelerde BCrypt ile şifrelenmelidir!

        // Veritabanına kaydetme (Create operasyonu)
        return userRepository.save(user);
    }
}

6. Controller Katmanı (POST Endpoint)

Son olarak dış dünyadan gelecek olan HTTP isteklerini yakalayacak REST API ucunu (Endpoint) oluşturuyoruz. Veri ekleme işlemleri her zaman POST metodu ile yapılır.

Spring boot rest controller ve PostMapping
@RestController
@RequestMapping("/api/users")
@RequiredArgsConstructor
public class UserController {

    private final UserService userService;

    @PostMapping
    public ResponseEntity<User> createUser(@RequestBody UserRequest request) {
        User savedUser = userService.saveUser(request);
        
        // REST standartlarına göre yeni kaynak eklendiğinde 201 Created dönülür.
        return ResponseEntity.status(HttpStatus.CREATED).body(savedUser);
    }
}

7. Postman ile API Testi

Kodlarımızı yazdık, şimdi Postman ile POST isteği atarak veritabanına kayıt işlemini test edebiliriz.

İstek Türü: POST

URL: http://localhost:8080/api/users

Body (JSON):

{
  "username": "testuser",
  "email": "test@test.com",
  "password": "my_secret_password"
}
Postman üzerinden Spring Boot API'sine Create isteği gönderme

İstek başarılı olursa sunucu size oluşturulan kaydı ve veritabanı tarafından otomatik atanan ID'yi içeren bir 201 Created yanıtı döndürecektir.

Sonuç

Bu yazıda Spring Boot CRUD Create işlemini güvenli ve katmanlı mimariye (Entity, DTO, Repository, Service, Controller) uygun olarak adım adım gerçekleştirdik.

Serinin diğer yazılarına göz atarak uygulamanızı tamamlayabilirsiniz:

Etiketler: spring boot crud create, spring boot postmapping, spring boot jpa save, spring boot rest api

Son Güncelleme: 2026

Latest Software Developers - Yazılım Blog Yazarı Profil Resmi

Yazar

LatestSoftwareDevelopers

Güncel yazılım teknolojilerinin takip edildiği blog.

Spring Boot ile ilgili yorumlar

Yorum Paylaş

EMail Zorunlu alanlar * *